This specification relates to a browser plugin interface.
A browser plugin is a separate software module that modifies the interface and the behavior of a browser. A conventional browser is configured to provide a plugin interface for runtime support of its hosted plugins. A typical plugin is developed with the expectation that it will be able to use browser capabilities at runtime, since plugins are not implemented to execute independently from a browser. A browser can expose a subset of its capabilities to its supported plugins through its plugin interface. For example, a plugin may be programmed to invoke one or more browser print functions that are exposed in a browser plugin interface.
Netscape Plugin Application Programming Interface (NPAPI) is a conventional browser plugin interface. Each browser function that is exposed in NPAPI has a unique numerical identifier. Browser and plugin developers conventionally hard code the numerical identifiers of functions they wish to invoke through NPAPI. The size of NPAPI has increased over time as functions have been added to the plugin interface, and multiple version levels of NPAPI exist. Maintaining compatibility between browser and plugin implementations typically requires the implementations to support a minimum NPAPI version level that includes the numerical identifiers of their commonly used functions.